package cl.solidit.geomanagement.persistance;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;

import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import cl.solidit.geomanagement.persistance.model.Comuna;

@Repository
public class ComunaDAO {
	@PersistenceContext
	private EntityManager em;

	@Transactional
	public List<Comuna> traerComuna() {
		TypedQuery<Comuna> q = em.createQuery("From Comuna", Comuna.class);
		List<Comuna> resultado = q.getResultList();
		return resultado;

	}
	@Transactional
	public Comuna findByName(String nombre) {
		TypedQuery<Comuna> q = em.createQuery("From Comuna c WHERE c.nombre=:nombre order by c.nombre", Comuna.class);
		q.setParameter("nombre", nombre);
		List<Comuna> comunas=q.getResultList();
		if(comunas.size()>0)
			return comunas.get(0);
		return null;

	}
	public Comuna idComunaFromNombre(String nombre){
		nombre=nombre.toUpperCase();
		TypedQuery<Comuna> q = em.createQuery("From Comuna c WHERE c.nombre=:nombre", Comuna.class);
		q.setParameter("nombre", nombre);
		List<Comuna> comunas=q.getResultList();
		if(comunas.size()==0){
			Comuna c= new Comuna();
			c.setNombre(nombre.toUpperCase());
			em.persist(c);
			return c;
		}
		return comunas.get(0);
	}
}
